package br.com.damazzy.util {
	
	import mx.controls.dataGridClasses.DataGridColumn;
	import mx.formatters.DateFormatter;
	
	
	/**
	 * Classe que contém métodos utilitários para as tabelas paginadas.
	 * 
	 * @author Bancoob
	 */
	public class FormatadorUtil{
		
		private static const TAM_MIN:Number = 0;
		private static const TAM_MAX:Number = 10;
		 
		public function FormatadorUtil(){
		
		}

		//**********
		// Serviços:
		//**********		
        public static function defaultDateLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var formatador:DateFormatter = new DateFormatter();
			var valor: Object = ReflectionUtils.recuperarPropriedade(objeto, coluna.dataField);

			formatador.formatString = "DD/MM/YYYY";
			return formatador.format(valor);
        }
        
        public static function formatDateLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
			var valor: Object = ReflectionUtils.recuperarPropriedade(objeto, coluna.dataField);
			var novoValor: String;
			
			if (valor == null || valor == "") {
				novoValor = "---";
			} else {
				novoValor = valor as String;
			}            

            return novoValor;
        }
        
        /*
         * Usado para "cortar" uma string de caractere muito grande, impossível 
         * se ser exibita em um grid de consulta.
        */
        public static function substringLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, coluna.dataField);
           	if(valor != null && valor.toString().length > TAM_MAX){
           		return valor.toString().substr(TAM_MIN, TAM_MAX);
           	} else if (valor != null) {
           		return valor.toString();
           	}
           	return "";
        }
        
        public static function defaultHoraLabelFunction(objeto:Object, coluna:DataGridColumn):String {
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto,	coluna.dataField);			         

            return formatarHora(valor as Date, "JJ:NN"); 
        }
        
        public static function formatarHora(hora: Date, formato: String): String {
        	var formatador:DateFormatter = new DateFormatter();

            formatador.formatString = formato;

            return formatador.format(hora); 
        }
        
        /**
        * Método que converte o status de um campo bolEletronico na GRID para SIM ou NÃO.
        * 
        * @param status
		* @return 
        * 
        */ 
        public static function labelSimNaoGrid(object: Object, column: DataGridColumn): String {
         	var valor: Object = ReflectionUtils.recuperarPropriedade(object, column.dataField);
         	
        	if (valor == "true") {
        		return "SIM";
        	} else if (valor == "false") {
        		return "NÃO";
        	} else {
        		return "";
        	}
        }
        
        public static function labelMoedaGrid(object: Object, column: DataGridColumn): String {
         	var valor: Object = ReflectionUtils.recuperarPropriedade(object, column.dataField);
         	
         	var novoValor: String;
         	
         	if (valor == null || valor == "") {
         		novoValor = "---";
         	} else {
         		novoValor = FormataNumero.formata(Number(valor), 2);
         	}
         	
         	return novoValor;
        }
        
        public static function labelMoedaGridValorDesconto(object: Object, column: DataGridColumn): String {
         	var valor: Object = ReflectionUtils.recuperarPropriedade(object, column.dataField);
         	
         	var novoValor: String;
         	
         	if (valor == null || valor == "" || valor == 0) {
         		novoValor = "---";
         	} else {
         		novoValor = FormataNumero.formata(Number(valor), 2);
         	}
         	
         	return novoValor;
        }
        
        public static function labelGridDesconto(object: Object, column: DataGridColumn): String {
         	var valor: Object = ReflectionUtils.recuperarPropriedade(object, column.dataField);
         	
         	var novoValor: String;
         	
         	if (valor == null || valor == "" || valor == 0) {
         		novoValor = "---";
         	} else {
         		novoValor = valor as String;
         	}
         	
         	return novoValor;
        }
        
        /**
        * Método que converte o status de um campo bolEletronico na GRID para SIM ou NÃO.
        * 
        * @param status
		* @return 
        * 
        */ 
        public static function labelReceitaRecebidaGrid(object: Object, column: DataGridColumn): String {
         	var valor: Object = ReflectionUtils.recuperarPropriedade(object, column.dataField);
         	var valorRetorno: String;
         	
        	if (valor == "1") {
        		valorRetorno = "SIM";
        	} else if (valor == "0") {
        		valorRetorno = "NÃO";
        	} else if (valor == "2") {
        		valorRetorno = "PARCIALMENTE";
        	}
        	
        	return valorRetorno;
        }
	}
}